本篇主要會說明,在 Hooks 讓 Function Component 具備 State 後,該如何使用及設置。
首先打開 src/index.jsx 中,裡面有先前設置的一個 Main
Component:
這個 Main
目前是沒有 State 的 Component ,也就是上一篇提到的 Stateless Component。
接著要從 react
套件中,把 useState
給 import
進檔案中:
import React, { useState } from 'react';
useState
在使用時會回傳一個陣列,陣列中的第一個值就是 State 的初始內容,第二個值是一個方法,能夠以它直接更新對應 State。以下是幾個簡單的使用範例:
// 會回傳一個陣列, count 為 0 , setCount 用來設置 count
const [count, setCount] = useState(0);
// 更新 count 至 1
setCount(1)
// name 的初始值為 '神 Q 超人' , 用 setName 可以設置 name
const [name, setName] = useState('神 Q 超人');
// 更新 name 至 '小馬彬'
setName('小馬彬');
了解基本的使用方式後,下方逐步將 Main
變成一個簡單的計數器,就像上一篇的範例。
完成後便可使用指令 npm run start
執行專案,就能看到剛剛製作的畫面:
點擊按鈕會觸發 State 改變,畫面 Render 新 State 的結果:
與 Class 不同的部分除了 Component 更簡潔外,要注意取用 State 時不需以 this
,更新時也不必用物件作更新:this.setState({ count: this.state.count + 1 ,})
,因為每個 State 都由不同的 useState
建立,所以只需要呼叫各自的更新方法就好。
本文的原始碼內容會放置於 GitHub 上,歡迎各位參考使用。
本文提到的 useState
只是 Hooks 的一小部分而已,就像是當初我們翻著獵人,然後聽見小傑他爸說:「其實我們的世界還有外面,嵌合蟻只是外面世界的小部分。」,而嵌合蟻就像 useState
,除了它以外,Hooks 也有很多有趣的功能,之後會再一一向大家介紹!
如果文章中有任何問題,或是不理解的地方,都可以留言告訴我!謝謝大家!
立刻感受到Hooks的強大,只要個別設置要更新的變數就可以,但是還是很好奇
useState回傳的陣列array[initialValue, method()]兩者間的作用方式到底是怎麼實作的!
剛才自己嘗試了一下很蠢的直接把setName('Name')寫在單行中,感覺自己超笨。 :))
哈哈哈哈哈,寫在單行裡面是什麼意思?
其實 setState 就只是回傳一個 Array,然後第一個位置放值,第二個位置放方法而已 XD
最近對JS有更加認識,體會到JS物件的強大。
原來setState這麼單純,看來我常常把東西想的太複雜XD。寫在單行就是我原先想測試它會跑出什麼訊息,直接把它寫在元件外XDDD。